/*******************************************************************************
ControllerManager.h

	A centralized controller updater.
*******************************************************************************/

#pragma once

#include <SFML/Window.hpp>	// For the Input class
#include <vector>			// The controller list
#include "Controller.h"		// A simple controller interface

class ControllerManager
{
public:
	// Releases memory
	~ControllerManager(void);
	// Get's the instance of the controller manager
	static ControllerManager* GetManager(void);
	// Adds a controller to the list
	void Add(Controller* pController);
	// Updates the controllers in the list
	void Update(const sf::Input& input);
protected:
	// Protected constructor so that only this class can create an object
	ControllerManager(void) {}
	// The instance of the controller manager
	static ControllerManager* m_pInstance;
	// The list of controllers
	std::vector<Controller*> m_controllerList;
}; // ControllerManager